package com.xinzhidi.web.netty.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.xinzhidi.web.bigscreen.domain.vo.EnergyDataListVo;
import com.xinzhidi.web.netty.entity.AgreementHeat;
import com.xinzhidi.web.netty.entity.dto.AgreementHeatListDto;
import com.xinzhidi.web.netty.entity.householdHeat.HouseholdData;
import com.xinzhidi.web.netty.entity.householdHeat.ReadData;
import com.xinzhidi.web.netty.entity.po.AgreementHeatAvgPo;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;


/**
 * 户用、单元热量协议-（实时数据）Mapper接口
 *
 * @author cx
 * @date 2023-06-17
 */
public interface AgreementHeatMapper extends BaseMapper<AgreementHeat> {
    /**
     * 查询户用、单元热量协议-（实时数据）
     *
     * @param id 户用、单元热量协议-（实时数据）主键
     * @return 户用、单元热量协议-（实时数据）
     */
    public AgreementHeat selectAgreementHeatById(Long id);

    /**
     * 查询户用、单元热量协议-（实时数据）列表
     *
     * @param agreementHeat 户用、单元热量协议-（实时数据）
     * @return 户用、单元热量协议-（实时数据）集合
     */
    public List<AgreementHeat> selectAgreementHeatList(AgreementHeat agreementHeat);

    /**
     * 新增户用、单元热量协议-（实时数据）
     *
     * @param agreementHeat 户用、单元热量协议-（实时数据）
     * @return 结果
     */
    public int insertAgreementHeat(AgreementHeat agreementHeat);

    /**
     * 修改户用、单元热量协议-（实时数据）
     *
     * @param agreementHeat 户用、单元热量协议-（实时数据）
     * @return 结果
     */
    public int updateAgreementHeat(AgreementHeat agreementHeat);

    /**
     * 删除户用、单元热量协议-（实时数据）
     *
     * @param id 户用、单元热量协议-（实时数据）主键
     * @return 结果
     */
    public int deleteAgreementHeatById(Long id);

    /**
     * 批量删除户用、单元热量协议-（实时数据）
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteAgreementHeatByIds(Long[] ids);

    /**
     * 根据住户id查询户用热量表数据
     *
     * @param dto
     * @return
     */
    ReadData getHouseholdHeatData(AgreementHeatListDto dto);

    /**
     * 获取住户热量表实时数据某个字段的平均值
     *
     * @param po
     * @return
     */
    BigDecimal getAvgValue(AgreementHeatAvgPo po);

    /**
     * 获取供回水温度平均值
     *
     * @param po
     * @return
     */
    BigDecimal getAverageAndReturnWaterValue(AgreementHeatAvgPo po);

    HouseholdData getUnitData(long householdId);

    /**
     * 通过单元id获取他下级住户的指标平均值
     * @param buildUnitId
     * @return
     */
    Map<String, String> getAvgByBuildUnitId(Long buildUnitId);

    EnergyDataListVo getAvgValveByBuildUnitId(Long buildUnitId);

    Map<String, String> getTotalHeatByBuildUnitId(Long buildUnitId);

    Map<String, String> getAvgByBuildId(Long buildId);

    Map<String, String> getTotalHeatByBuildId(Long buildId);

    EnergyDataListVo getAvgValveByBuildId(Long buildId);
}
